}));
vbox.add(this._calendar.actor);
- item = new PopupMenu.PopupSeparatorMenuItem();
- item.setColumnWidths(1);
- vbox.add(item.actor, {y_align: St.Align.END, expand: true, y_fill: false});
- item = new PopupMenu.PopupMenuItem(_("Date and Time Settings"));
- item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
+ item = this.menu.addSettingsAction(_("Date and Time Settings"), 'gnome-datetime-panel.desktop');
+
+ let separator = new PopupMenu.PopupSeparatorMenuItem();
+ separator.setColumnWidths(1);
+ vbox.add(separator.actor, {y_align: St.Align.END, expand: true, y_fill: false});
+
item.actor.can_focus = false;
- vbox.add(item.actor);
+ item.actor.reparent(vbox);
// Add vertical separator
return false;
},
- _onPreferencesActivate: function() {
- this.menu.close();
- Main.overview.hide();
- let app = Shell.AppSystem.get_default().lookup_setting('gnome-datetime-panel.desktop');
- app.activate();
- },
-
_onOpenCalendarActivate: function() {
this.menu.close();
let calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
},
addAction: function(title, callback) {
- var menuItem = new PopupMenuItem(title);
+ let menuItem = new PopupMenuItem(title);
this.addMenuItem(menuItem);
menuItem.connect('activate', Lang.bind(this, function (menuItem, event) {
callback(event);
}));
+
+ return menuItem;
+ },
+
+ addSettingsAction: function(title, desktopFile) {
+ let menuItem = this.addAction(title, function() {
+ let app = Shell.AppSystem.get_default().lookup_setting(desktopFile);
+
+ if (!app) {
+ log('Settings panel for desktop file ' + desktopFile + ' could not be loaded!');
+ return;
+ }
+
+ Main.overview.hide();
+ app.activate();
+ });
+ return menuItem;
},
/**
this.menu.addMenuItem(mouseKeys);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
- this.menu.addAction(_("Universal Access Settings"), function() {
- Main.overview.hide();
- let app = Shell.AppSystem.get_default().lookup_setting('gnome-universal-access-panel.desktop');
- app.activate();
- });
+ this.menu.addSettingsAction(_("Universal Access Settings"), 'gnome-universal-access-panel.desktop');
},
_buildItemExtended: function(string, initial_value, writable, on_set) {
this._applet.connect('notify::show-full-menu', Lang.bind(this, this._updateFullMenu));
this._updateFullMenu();
- this.menu.addAction(_("Bluetooth Settings"), function() {
- Main.overview.hide()
- let app = Shell.AppSystem.get_default().lookup_setting('bluetooth-properties.desktop');
- app.activate();
- });
+ this.menu.addSettingsAction(_("Bluetooth Settings"), 'bluetooth-properties.desktop');
this._applet.connect('pincode-request', Lang.bind(this, this._pinRequest));
this._applet.connect('confirm-request', Lang.bind(this, this._confirmRequest));
switch (device.type) {
case GnomeBluetoothApplet.Type.KEYBOARD:
- item.menu.addAction(_("Keyboard Settings"), function() {
- GLib.spawn_command_line_async('gnome-control-center keyboard');
- });
+ item.menu.addSettingsAction(_("Keyboard Settings"), 'gnome-keyboard-panel.desktop');
break;
case GnomeBluetoothApplet.Type.MOUSE:
- item.menu.addAction(_("Mouse Settings"), function() {
- GLib.spawn_command_line_async('gnome-control-center mouse');
- });
+ item.menu.addSettingsAction(_("Mouse Settings"), 'gnome-mouse-panel.desktop');
break;
case GnomeBluetoothApplet.Type.HEADSET:
case GnomeBluetoothApplet.Type.HEADPHONES:
case GnomeBluetoothApplet.Type.OTHER_AUDIO:
- item.menu.addAction(_("Sound Settings"), function() {
- GLib.spawn_command_line_async('gnome-control-center sound');
- });
+ item.menu.addSettingsAction(_("Sound Settings"), 'gnome-sound-panel.desktop');
break;
default:
break;
Main.overview.hide();
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
}));
- this.menu.addAction(_("Region and Language Settings"), function() {
- Main.overview.hide();
- let app = Shell.AppSystem.get_default().lookup_setting('gnome-region-panel.desktop');
- app.activate();
- });
+ this.menu.addSettingsAction(_("Region and Language Settings"), 'gnome-region-panel.desktop');
},
_adjust_group_names: function(names) {
this._devices.vpn.section.actor.hide();
this.menu.addMenuItem(this._devices.vpn.section);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
-
- this.menu.addAction(_("Network Settings"), function() {
- Main.overview.hide();
- let app = Shell.AppSystem.get_default().lookup_setting('gnome-network-panel.desktop');
- app.activate();
- });
+ this.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
this._activeConnections = [ ];
this._connections = [ ];
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._otherDevicePosition = 2;
- this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
- this.menu.addAction(_("Power Settings"),function() {
- Main.overview.hide();
- let app = Shell.AppSystem.get_default().lookup_setting('gnome-power-panel.desktop');
- app.activate();
- });
+ this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this.menu.addSettingsAction(_("Power Settings"), 'gnome-power-panel.desktop');
this._proxy.connect('Changed', Lang.bind(this, this._devicesChanged));
this._devicesChanged();
this.menu.addMenuItem(this._inputSlider);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
- this.menu.addAction(_("Sound Settings"), function() {
- Main.overview.hide();
- let app = Shell.AppSystem.get_default().lookup_setting('gnome-sound-panel.desktop');
- app.activate();
- });
+ this.menu.addSettingsAction(_("Sound Settings"), 'gnome-sound-panel.desktop');
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
this._control.open();